package error

import (
	"google.golang.org/grpc/codes"
	"google.golang.org/grpc/status"
)

const (
	// ErrOk                 成功
	ErrOk codes.Code = 0
	// ErrUnknown            未知错误
	ErrUnknown codes.Code = 101
	// ErrArgsInvalid        参数异常
	ErrArgsInvalid codes.Code = 102
	// ErrArgsEmpty          参数为空
	ErrArgsEmpty codes.Code = 103
	// ErrSystem             稍后请重试
	ErrSystem codes.Code = 104
	// ErrDB                 数据库错误
	ErrDB codes.Code = 105
	// ErrNoServe            未提供服务
	ErrNoServe codes.Code = 106
	// ErrTokenInvalid       身份解析失败
	ErrTokenInvalid codes.Code = 107
	// ErrSignVerifyFailed   签名验证失败
	ErrSignVerifyFailed codes.Code = 108
	// ErrSignExpired        签名过期
	ErrSignExpired codes.Code = 109
	// ErrVerifyFailed       验证失败
	ErrVerifyFailed codes.Code = 110
	// ErrSystemBusy         稍后请重试
	ErrSystemBusy codes.Code = 111
	ErrEmptyData  codes.Code = 112
)

// Msg 异常消息映射表
var Msg = map[codes.Code]string{
	ErrOk:               " 成功",
	ErrUnknown:          " 未知错误",
	ErrArgsInvalid:      " 参数异常",
	ErrArgsEmpty:        " 参数为空",
	ErrSystem:           " 稍后请重试",
	ErrDB:               " 数据库错误",
	ErrNoServe:          " 未提供服务",
	ErrTokenInvalid:     " 身份解析失败",
	ErrSignVerifyFailed: " 签名验证失败",
	ErrSignExpired:      " 签名过期",
	ErrVerifyFailed:     " 验证失败",
	ErrSystemBusy:       " 稍后请重试",
}

var (
	// GrpcErrOk                 成功
	GrpcErrOk = status.Errorf(ErrOk, " 成功")
	// GrpcErrUnknown            未知错误
	GrpcErrUnknown = status.Errorf(ErrUnknown, " 未知错误")
	// GrpcErrArgsInvalid        参数异常
	GrpcErrArgsInvalid = status.Errorf(ErrArgsInvalid, " 参数异常")
	// GrpcErrArgsEmpty          参数为空
	GrpcErrArgsEmpty = status.Errorf(ErrArgsEmpty, " 参数为空")
	// GrpcErrSystem             稍后请重试
	GrpcErrSystem = status.Errorf(ErrSystem, " 稍后请重试")
	// GrpcErrDB                 数据库错误
	GrpcErrDB = status.Errorf(ErrDB, " 数据库错误")
	// GrpcErrNoServe            未提供服务
	GrpcErrNoServe = status.Errorf(ErrNoServe, " 未提供服务")
	// GrpcErrTokenInvalid       身份解析失败
	GrpcErrTokenInvalid = status.Errorf(ErrTokenInvalid, " 身份解析失败")
	// GrpcErrSignVerifyFailed   签名验证失败
	GrpcErrSignVerifyFailed = status.Errorf(ErrSignVerifyFailed, " 签名验证失败")
	// GrpcErrSignExpired        签名过期
	GrpcErrSignExpired = status.Errorf(ErrSignExpired, " 签名过期")
	// GrpcErrVerifyFailed       验证失败
	GrpcErrVerifyFailed = status.Errorf(ErrVerifyFailed, " 验证失败")
	// GrpcErrSystemBusy         稍后请重试
	GrpcErrSystemBusy = status.Errorf(ErrSystemBusy, " 稍后请重试")
	GrpcErrEmptyData  = status.Errorf(ErrEmptyData, " 数据为空")
)
